﻿namespace EasyToolkit.BindingTemplates.Definitions
{
    using System.Collections.Generic;
    using EasyToolkit.BindingTemplates.Definitions.Binding;

    public interface ITemplateDefinition
    {
        /// <summary> Get the template name</summary>
        string Name { get; }

        /// <summary> Get the template description</summary>
        string Description { get; }

        /// <summary> Get if the views from this template can be sortable and filterable</summary>
        bool IsSortableAndFilterable { get; }

        /// <summary> Get the main binding definition type</summary>
        IBindingDefinition MainBindingDefinition { get; }

        /// <summary> Get the main binding definition type</summary>
        Orientation Orientation { get; }

        /// <summary> Get the binding parts of the template</summary>
        List<IDefinitionPart> BindingParts { get; }

        List<ILinkedTemplateDefinition> LinkedTemplates { get; }

        bool HasLinkedTemplates { get; }

        List<IBindingDefinition> BindingDefinitions { get; }

        BindingType BindingType { get; }

        ITemplateDefinition Header { get; }
        ITemplateDefinition Footer { get; }
    }
}
